exports.beforeRequestPayment = function (paymentArgs, callback) {
  // 注意：
  // 功能页函数（这个函数）不应 require 其他非 functional-pages 目录中的文件，
  // 其他非 functional-pages 目录中的文件也不应 require 这个目录中的文件，
  // 这样的 require 调用在未来将不被支持。
  //
  // 同在 functional-pages 中的文件可以 require
  var getOpenIdURL = "";
  var paymentURL = "";

  // 自定义的参数，此处应为从插件传递过来的 'A'
  var customArgument = paymentArgs;
  console.log(customArgument)
  var requesturl = ""
  if (customArgument.environment == "dvp") {
    requesturl = "https://dvp.lianjieit.net/his_dvp/"
  } else if (customArgument.environment == "test") {
    requesturl = "https://testyjt.lianjieit.net/gf/"
  } else if (customArgument.environment == "gf") {
    requesturl = "https://www.lianjieit.net/gf/"
  }
  // 第一步：调用 wx.login 方法获取 code，然后在服务端调用微信接口使用 code 换取下单用户的 openId
  // 具体文档参考 https://mp.weixin.qq.com/debug/wxadoc/dev/api/api-login.html?t=20161230#wxloginobject
  wx.login({
    success: function (data) {
      console.log(data.code)
      wx.request({
        url: requesturl + "api_miniprogram/internet_hospital/api_auth/internet_hospital_program_login",
        data: {
          code: data.code,
          setting_key:"300"
        },
        method: 'POST',
        header: {
          "content-type": "application/x-www-form-urlencoded",
        },
        success: function (res) {
          console.log(customArgument.order_number)
          // 拉取用户 openid 成功
          // 第二步：在服务端调用支付统一下单，返回支付参数。这里的开发和普通的 wx.requestPayment 相同
          // 文档可以参考 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3
          wx.request({
            url: requesturl + "api_miniprogram/order/api_pay/jump_mini_pay",
            data: {
              openid: res.data.data.openid,
              order_number: customArgument.order_number,
              type: 2
            },
            header: {
              "content-type": "application/x-www-form-urlencoded",
            },
            method: 'POST',
            success: function (res) {
              console.log('unified order success, response is:', res);
              var payargs = res.data.data;
              // 第三步：调用回调函数 callback 进行支付
              // 在 callback 中需要返回两个参数： err 和 requestPaymentArgs：
              // err 应为 null （或者一些失败信息）；
              // requestPaymentArgs 将被用于调用 wx.requestPayment，除了 success/fail/complete 不被支持外，
              // 应与 wx.requestPayment 参数相同。
              var error = null;
              var requestPaymentArgs = {
                timeStamp: payargs.timeStamp,
                nonceStr: payargs.nonceStr,
                package: payargs.package,
                signType: payargs.signType,
                paySign: payargs.paySign,
                extraData: { // 用 extraData 传递自定义数据
                  timeStamp: payargs.timeStamp
                },
              };
              callback(error, requestPaymentArgs);
            }
          });
        },
        fail: function (res) {
          console.log('拉取用户 openid 失败，将无法正常使用开放接口等服务', res);
          // callback 第一个参数为错误信息，返回错误信息
          callback(res);
        }
      });
    },
    fail: function (err) {
      console.log('wx.login 接口调用失败，将无法正常使用开放接口等服务', err)
      // callback 第一个参数为错误信息，返回错误信息
      callback(err);
    }
  });
}